from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np

def liner_fit(df, window=None):
    if window is None:
        window = len(df)
    recent_data = df['close'].tail(window).reset_index(drop=True)
    
    # 准备特征矩阵X（天数）和目标变量y（收盘价） [5]
    X = np.arange(window).reshape(-1, 1)  # 天数作为特征
    y = recent_data.values                # 收盘价作为目标
    
    # 创建并训练线性回归模型 [3][5]
    model = LinearRegression()
    model.fit(X, y)
    
    # 预测拟合价格
    fitted_prices = model.predict(X)
    
    # 计算差值
    diffs = y - fitted_prices
    
    # 创建结果DataFrame [1][2]
    result_df = pd.DataFrame({
        'date': df.index[-window:],       # 日期索引
        'actual_price': y,                # 实际价格
        'fitted_price': fitted_prices,    # 拟合价格
        'price_diff': diffs               # 差值
    })
    
    return result_df